package com.party.core.service.member;

import com.party.core.model.member.Member;
import com.party.core.model.member.PartnerMember;
import com.party.core.service.IBaseService;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 合作商会员关系
 * Created by wei.li
 *
 * @date 2017/9/20 0020
 * @time 14:53
 */
public interface IPartnerMemberService extends IBaseService<PartnerMember> {

    /**
     * 如果不存在则设置
     * @param partnerMember 机构会员
     * @return 机构会员
     */
    PartnerMember getSet(PartnerMember partnerMember);

    /**
     * 插入机构用户
     * @param partnerId 机构编号
     * @param memberId 会员编号
     */
    void insert(String partnerId, String memberId);


    /**
     * 插入机构用户
     * @param partnerId 机构编号
     * @param memberId 会员编号
     * @param createDate 创建时间
     */
    void insert(String partnerId, String memberId, Date createDate);


    /**
     * 统计机构会员
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param partnerId 机构编号
     * @param isRealName 是否实名用户
     * @return 统计数据
     */
    List<HashMap<String, Object>> countByDate(String startDate, String endDate, String partnerId, Boolean isRealName);


    /**
     * 统计机构会员
     * @param partnerId 机构编号
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param isRealName 是否实名用户
     * @return 统计数据
     */
    Integer count(String partnerId, String startDate, String endDate, Boolean isRealName);

    /**
     * 统计机构会员
     * @param partnerId 机构编号
     * @param isRealName 是否实名用户
     * @return 统计数据
     */
    Integer count(String partnerId, Boolean isRealName);

    /**
     * 获取机构下的所有会员
     * @param partnerId
     * @return
     */
    List<Member> getMembersByPartnerId(String partnerId);

    /**
     * 通过机构id和用户id查找
     * @param partnerId
     * @param memberId
     * @return
     */
    PartnerMember findByPartnerAndMember(String partnerId, String memberId);

    Long getCount(PartnerMember partnerMember);

    /**
     * 获取用户的主机构
     *
     * @param memberId 用户id
     * @param partnerId   机构id
     * @return 主机构
     * @author yifeng
     * @date 17:39 2019/11/14
     **/
    PartnerMember getMainOrg(String memberId, String partnerId);

    /***
    * 获取用户机构
    * @Date 9:20 2019/11/15
    * @param partnerMember
    * @return
    **/
    List<PartnerMember> getMemberPartners(PartnerMember partnerMember);


    /***
     * 获取用户机构_to
     * @Date 9:22 2019/11/15
     * @param param
     * @return
     **/
    List<PartnerMember> getMemberPartnersTo(Map<String,Object> param);


    Integer cAnalysisGetMemberCount(List<String> partnerIds,Map<String,Object> params);


    Integer getMemberRecommendCount(List<String> partnerIds,Map<String,Object> params);

    List<PartnerMember> getAllXzgsMember(Map<String,Object> params);
}
